package com.zyong.design.pattern.state.case2;

import java.util.Random;

/**
 * 可以抽奖的状态
 * @author zyong
 */
public class CanRaffleAbstractState extends AbstractState {
    Activity activity;

    public CanRaffleAbstractState(Activity activity) {
        this.activity = activity;
    }

    /**
     * 已经扣除了积分，不能再扣
     */
    @Override
    public void deductingPoints() {
        System.out.println("已经扣除过了积分");
    }

    @Override
    public boolean raffle() {
        System.out.println("正在抽奖，请稍等！");

        Random r = new Random();
        int num = r.nextInt(10);

        // 10%中奖机会
        if (num == 0) {
            // 改变状态为发放奖品状态
            activity.setState(activity.getDistributeState());
            return true;
        } else {
            System.out.println("很遗憾没有抽中奖品！");
            // 改变状态为不能抽奖
            activity.setState(activity.getNoRaffleState());
            return false;
        }
    }

    /**
     * 不能发放奖品
     */
    @Override
    public void distributePrizes() {
        System.out.println("没中奖，不能发放奖品");
    }
}
